package cn.wolfcode.service;

import cn.wolfcode.domain.SeckillProduct;
import cn.wolfcode.domain.SeckillProductVo;

import java.util.List;

/**
 * Created by lanxw
 */
public interface ISeckillProductService {
    List<SeckillProductVo> queryByTime(Integer time);

    /**
     * 查询秒杀商品的详细信息
     *
     * @param time
     * @param seckillId
     * @return
     */
    SeckillProductVo find(Integer time, Long seckillId);

    /**
     * 库存减一
     *
     * @param seckillId
     */
    int decrStockCount(Long seckillId);

    /**
     * 从缓存中获取秒杀商品集合
     *
     * @param time
     * @return
     */
    List<SeckillProductVo> queryByTimeFromCache(Integer time);

    /**
     * 从缓存中获取秒杀商品详细信息
     *
     * @param time
     * @param seckillId
     * @return
     */
    SeckillProductVo findFromCache(Integer time, Long seckillId);


    int incrStock(Long seckillId);

    /**
     * 同步数据库库存到redis预库存
     *
     * 超时取消订单，同步库存到redis预库存
     * 在消费中间件正常生成订单的请求消息被消费出现异常的处理，同步商品库存到redis中
     *
     * @param time
     * @param seckillId
     */
    void syncStockCount(Integer time,Long seckillId);
}

